import { InjectableObject } from "../inject";
import { ICommandMap } from "./base/ICommandMap";
import { IMediatorMap } from "./base/IMediatorMap";

export abstract class Command extends InjectableObject {

    public commandMap: ICommandMap = null;
    public mediatorMap: IMediatorMap = null;

    constructor() {
        super();

        this.commandMap = this.injector.getInstance('core.CommandMap');
        this.mediatorMap = this.injector.getInstance('core.MediatorMap');
    }

    public abstract execute(...args: any[]): void;
}